我写Makefile几乎是新手,对可能出现的小错误感到抱歉。即使源代码没有任何变化,我的Makefile仍会继续重新编译可执行文件(.out)。目标对其他对象有一些依赖性。无论如何,这些对象不会重新编译相对的源文件(就像应该的那样)。那么,为什么目标重新编译.out文件呢?
任何其他建议将不胜感激。
# -*- Makefile -*-
CC:= nvcc
CFLAGS:= -std=c++14 -g -DMEASURES
ALLFLAGS:= $(CFLAGS) -Iinclude/
LOWPAR:= $(ALLFLAGS) -DLOWPAR
BIN:=bin/
SRC:=src/
INCLUDE:=include/
.PHONY: future managed stream clean
####DEVICE####
#cos future, stream, managed
future: $(BIN)main_cos.o $(BIN)farmkernels.o $(BIN)cudaUtils.o
$(CC) $(ALLFLAGS) $(BIN)main_cos.o $(BIN)farmkernels.o $(BIN)cudaUtils.o -o $(BIN)future.out
managed: $(BIN)main_cos.o $(BIN)farmkernels.o $(BIN)cudaUtils.o
$(CC) $(ALLFLAGS) $(BIN)main_cos.o $(BIN)farmkernels.o $(BIN)cudaUtils.o -o $(BIN)managed.out
stream: $(BIN)main_cos.o $(BIN)farmkernels.o $(BIN)cudaUtils.o
$(CC) $(ALLFLAGS) $(BIN)main_cos.o $(BIN)farmkernels.o $(BIN)cudaUtils.o -o $(BIN)stream.out
$(BIN)main_cos.o: $(SRC)main_cos.cpp $(INCLUDE)cosFutStr.h $(INCLUDE)cudaUtils.h
$(CC) $(ALLFLAGS) -c $(SRC)main_cos.cpp -D$(shell echo $(MAKECMDGOALS) | tr a-z A-Z) -o …Run Code Online (Sandbox Code Playgroud) 我正在使用计算能力为 6.0 的 Tesla P100。我想找到一个工具来自动获取我的内核代码的最佳网格和块大小。
我最近发现了CUDA 占用计算器(.xls 电子表格)。但我意识到它有点过时了(功能直到 2.1 为止)。
我尝试搜索更新的电子表格,包括更高的 CC,但没有任何结果。
所以我寻找替代方案,发现从 CUDA 6.5 开始,引入了Occupancy API 。这是电子表格的更新替代品吗?
此外,我从 GitHub 上找到了这个工具 。我可以考虑将此作为替代方案吗?还是使用 Occupancy API 更好?
另外,CUDA 分析器(nvprof或Nsight)可以对占用率进行估计并给出一些最佳的块/网格大小吗?
我对这些工具还很陌生。