tlrmchlsmth / momms

Multilevel Optimized Matrix-matrix Multiplication Sandbox
BSD 3-Clause "New" or "Revised" License
8 stars 1 forks source link

Missing dt_on_output #7

Open yurikamome opened 6 years ago

yurikamome commented 6 years ago

To Whom It May Concern,

I am trying to compile MOMMS with rust-1.28.0-nightly and newest BLIS, but got the following error messages:

error[E0063]: missing field dt_on_output in initializer of kern::ukernel_wrapper::blis_types::auxinfo_t
--> src/kern/ukernel_wrapper.rs:62:28
|
62 | let mut info = auxinfo_t{
| ^^^^^^^^^ missing dt_on_output

error[E0063]: missing field dt_on_output in initializer of kern::ukernel_wrapper::blis_types::auxinfo_t
--> src/kern/ukernel_wrapper.rs:79:28
|
79 | let mut info = auxinfo_t{
| ^^^^^^^^^ missing dt_on_output

error[E0063]: missing field dt_on_output in initializer of kern::ukernel_wrapper::blis_types::auxinfo_t
--> src/kern/ukernel_wrapper.rs:96:28
|
96 | let mut info = auxinfo_t{
| ^^^^^^^^^ missing dt_on_output

error: aborting due to 3 previous errors

For more information about this error, try rustc --explain E0063.
error: Could not compile momms.

Could you please provide some help? Thanks very much.

tlrmchlsmth commented 6 years ago

Hello,

Because MOMMS uses Rust nightly, and (to a lesser extent) because the low level interfaces in BLIS change occasionally, every so often I have to update MOMMS.

I'ill do so in the next couple of days, and feel free to ping me again if I haven't gotten to it by Monday.

tlrmchlsmth commented 6 years ago

This should be fixed by c463b10. BLIS added support for casting the output of the microkernel to a different datatype and I have added support for it.

Note that as of right now, MOMMS requires ICC to compile the HSW micro-kernels.

Let me know if it works for you.

yurikamome commented 6 years ago

Thanks a lot, Sir. I think I can finished the compilation now.

And could I ask how to run the binaries under target/release? I saw there are several files named "exper_l*", a "knm" and a libmomms.rlib. Running with "./exper_l3" seems not the right way.

tlrmchlsmth commented 6 years ago

Look in src/exper. The exper_l* executables run the experiments in there. The "./exper_l3" runs an experiment comparing GEMM performance implemented with the loops that make up Goto's algorithm and loops that make up another algorithm (without performing packing).

yurikamome commented 6 years ago

By running ".exper_l3" I got the following error message (compiled with 1.31.0-nightly):

./exper_l3
thread 'main' panicked at 'called Option::unwrap() on a None value', libcore/option.rs:355:21
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
1: std::panicking::default_hook::{{closure}}
at libstd/sys_common/backtrace.rs:71
2: std::panicking::rust_panic_with_hook
at libstd/panicking.rs:227
at libstd/panicking.rs:476
3: std::panicking::continue_panic_fmt
at libstd/panicking.rs:390
4: rust_begin_unwind
at libstd/panicking.rs:325
5: core::panicking::panic_fmt
at libcore/panicking.rs:77
6: core::panicking::panic
at libcore/panicking.rs:52
7: momms::composables::spawn::cpuset_for_core
8: exper_l3::test
9: std::rt::lang_start::{{closure}}
10: main
11: __libc_start_main
12:
thread '' panicked at 'called Result::unwrap() on an Err value: "PoisonError { inner: .. }"', libcore/result.rs:1009:5

tlrmchlsmth commented 6 years ago

What system and compiler are you using? The experiments spawn threads and use hwloc to bind them to CPUs, and it looks like the error you are encountering is occurring during that process.

yurikamome commented 6 years ago

I'm using: Linux 3.10.0-693.17.1.el7.x86_64 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) icc (ICC) 19.0.0.070 20180524 hwloc-2.0.2 llvm/clang 6.0.0

tlrmchlsmth commented 6 years ago

Hi, sorry I've been slow to work on this. I just pushed a commit to handle when the CPU binding using hwloc doesn't work. Instead of crashing, it just continues without doing CPU binding. Does it fix your issue?