-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] global variable initialized from num_performance_cores() become 0 after compile #3311
Comments
Appears it's not just cores, it's all of sys.info(?!)* Confirmed same behavior on *Tested 5 of the sys.info calls from sys.info import *
var workers = num_performance_cores()
var logical = num_logical_cores()
var physical = num_physical_cores()
var SIMD_BIT_WIDTH = simdbitwidth()
var SIMDBITEWIDTH = simdbytewidth()
def main():
print(workers)
print(logical)
print(physical)
print(SIMD_BIT_WIDTH)
print(SIMDBITEWIDTH) Returns darin@home:~/Playground/mojo_bug_testing$ mojo 3311_test_extra.mojo
8
16
8
256
32
darin@home:~/Playground/mojo_bug_testing$ mojo build 3311_test_extra.mojo
darin@home:~/Playground/mojo_bug_testing$ ./3311_test_extra
0
0
0
0
0 |
Aliasing all the above calls does not compile from sys.info import *
alias workers = num_performance_cores()
alias logical = num_logical_cores()
alias physical = num_physical_cores()
alias SIMD_BIT_WIDTH = simdbitwidth()
alias SIMDBITEWIDTH = simdbytewidth()
def main():
print(workers)
print(logical)
print(physical)
print(SIMD_BIT_WIDTH)
print(SIMDBITEWIDTH) returns /__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:113:4: error: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:96:4: note: function instantiation failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:108:57: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:68:4: note: function instantiation failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:84:18: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:105:8: note: function instantiation failed
<unknown>:0: note: failed to compile-time evaluate function call
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/info.mojo:709:4: note: failed to interpret function @stdlib::sys::info::num_performance_cores()
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/info.mojo:716:76: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/ffi.mojo:342:6: note: failed to interpret operation pop.external_call{func: "KGEN_CompilerRT_NumPerformanceCores" : !kgen.string, funcAttrs: ["willreturn"], memory: #llvm.memory_effects<other = none, argMem = none, inaccessibleMem = none>, resAttrs: [{llvm.noundef}]}(#kgen.pack<> : !kgen.pack<[]>)
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/info.mojo:716:76: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/ffi.mojo:342:6: note: unable to interpret call to unknown external function: KGEN_CompilerRT_NumPerformanceCores
mojo: error: failed to run the pass manager |
I can't reproduce this on the current internal build. If you move from sys.info import num_performance_cores
def main():
var workers = num_performance_cores()
print(workers) Does that fix it? @abduld is a global |
Yes, var in scope of main works.
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:113:4: error: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:96:4: note: function instantiation failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:108:57: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:68:4: note: function instantiation failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:84:18: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/builtin/_startup.mojo:105:8: note: function instantiation failed
<unknown>:0: note: failed to compile-time evaluate function call
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/info.mojo:709:4: note: failed to interpret function @stdlib::sys::info::num_performance_cores()
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/info.mojo:716:76: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/ffi.mojo:342:6: note: failed to interpret operation pop.external_call{func: "KGEN_CompilerRT_NumPerformanceCores" : !kgen.string, funcAttrs: ["willreturn"], memory: #llvm.memory_effects<other = none, argMem = none, inaccessibleMem = none>, resAttrs: [{llvm.noundef}]}(#kgen.pack<> : !kgen.pack<[]>)
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/info.mojo:716:76: note: call expansion failed
/__w/modular/modular/open-source/mojo/stdlib/stdlib/sys/ffi.mojo:342:6: note: unable to interpret call to unknown external function: KGEN_CompilerRT_NumPerformanceCores
mojo: error: failed to run the pass manager |
No that is unexpected and we should fix it |
Bug description
Using
mojo run
, it works normally and prints 6.After
mojo compile
, it prints 0.Steps to reproduce
just run the code above.
btw,
This works well in both
mojo run
andmojo compile
.System information
The text was updated successfully, but these errors were encountered: