Skip to content

Commit f70a33d

Browse files
authored
Merge pull request #49 from EnzymeAD/more-helper
More helper
2 parents 6becc11 + 731bbd1 commit f70a33d

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

compiler/rustc_codegen_llvm/src/back/write.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -673,12 +673,16 @@ pub(crate) unsafe fn enzyme_ad(
673673
CreateTypeAnalysis(logic_ref, std::ptr::null_mut(), std::ptr::null_mut(), 0);
674674

675675
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymeStrictAliasing), 0);
676+
676677
if std::env::var("ENZYME_PRINT_TA").is_ok() {
677678
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymePrintType), 1);
678679
}
679680
if std::env::var("ENZYME_PRINT_AA").is_ok() {
680681
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymePrintActivity), 1);
681682
}
683+
if std::env::var("ENZYME_PRINT_PERF").is_ok() {
684+
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymePrintPerf), 1);
685+
}
682686
if std::env::var("ENZYME_PRINT").is_ok() {
683687
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymePrint), 1);
684688
}
@@ -733,22 +737,29 @@ pub(crate) unsafe fn differentiate(
733737
_cgcx: &CodegenContext<LlvmCodegenBackend>,
734738
diff_items: Vec<AutoDiffItem>,
735739
_typetrees: FxHashMap<String, DiffTypeTree>,
736-
config: &ModuleConfig,
740+
_config: &ModuleConfig,
737741
) -> Result<(), FatalError> {
738742
let llmod = module.module_llvm.llmod();
739743
let llcx = &module.module_llvm.llcx;
740744

741-
if config.enzyme_print_activity {
742-
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymePrintActivity), 1);
743-
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymePrintType), 1);
744-
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymePrint), 1);
745-
}
746-
747745
llvm::EnzymeSetCLBool(std::ptr::addr_of_mut!(llvm::EnzymeStrictAliasing), 0);
748746

749747
if std::env::var("ENZYME_PRINT_MOD").is_ok() {
750748
unsafe {LLVMDumpModule(llmod);}
751749
}
750+
if std::env::var("ENZYME_TT_DEPTH").is_ok() {
751+
let depth = std::env::var("ENZYME_TT_DEPTH").unwrap();
752+
let depth = depth.parse::<i64>().unwrap();
753+
assert!(depth >= 1);
754+
llvm::EnzymeSetCLInteger(std::ptr::addr_of_mut!(llvm::EnzymeMaxTypeDepth), depth);
755+
}
756+
if std::env::var("ENZYME_TT_WIDTH").is_ok() {
757+
let width = std::env::var("ENZYME_TT_WIDTH").unwrap();
758+
let width = width.parse::<i64>().unwrap();
759+
assert!(width >= 1);
760+
llvm::EnzymeSetCLInteger(std::ptr::addr_of_mut!(llvm::MaxTypeOffset), width);
761+
}
762+
752763
for item in diff_items {
753764
let res = enzyme_ad(llmod, llcx, item);
754765
assert!(res.is_ok());

compiler/rustc_codegen_llvm/src/llvm/ffi.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2766,6 +2766,11 @@ extern "C" {
27662766
}
27672767

27682768
extern "C" {
2769+
pub static mut MaxIntOffset: c_void;
2770+
pub static mut MaxTypeOffset: c_void;
2771+
pub static mut EnzymeMaxTypeDepth: c_void;
2772+
2773+
pub static mut EnzymePrintPerf: c_void;
27692774
pub static mut EnzymePrintActivity: c_void;
27702775
pub static mut EnzymePrintType: c_void;
27712776
pub static mut EnzymePrint: c_void;

src/bootstrap/llvm.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,9 @@ impl Step for Enzyme {
806806

807807
builder.update_submodule(&Path::new("src").join("tools").join("enzyme"));
808808
let mut cfg = cmake::Config::new(builder.src.join("src/tools/enzyme/enzyme/"));
809+
// TODO: Find a nicer way to use Enzyme Debug builds
810+
//cfg.profile("Debug");
811+
//cfg.define("CMAKE_BUILD_TYPE", "Debug");
809812
configure_cmake(builder, target, &mut cfg, true, LdFlags::default(), &[]);
810813

811814
// Re-use the same flags as llvm to control the level of debug information

0 commit comments

Comments
 (0)