diff --git a/Makefile b/Makefile
index 3c197047d87e9bd009f7ddd3f5bcdecc7fd8c0c5..b84b7b4190d5336b3872191924ee5b81b8900bd6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,18 +1,27 @@
-CXX = g++
-CXXFLAGS = -std=c++17 -Wall -Wextra -O0
+CXX = clang++
+CXXFLAGS = -std=c++17 -Wall -Wextra -O3 
 TARGET = main
-SRC = matrix_opencl.cpp main.cpp mlp_sgd.cpp globals.cpp
+SRC = matrix_opencl.cpp mlp_sgd.cpp globals.cpp
+LIBS = -lOpenCL
 
 all:
 	$(MAKE) clean && $(MAKE) run
 
 $(TARGET): $(SRC)
-	$(CXX) $(CXXFLAGS) -o $(TARGET) $(SRC) -lOpenCL
+	$(CXX) $(CXXFLAGS) -o $(TARGET)$(SUFFIX) $(SRC) main.cpp $(LIBS)
 
 run: $(TARGET)
 	./$(TARGET)
 
+fast: benchmark.cpp
+	$(CXX) $(CXXFLAGS) -DFAST_MATMUL -o benchmark$(SUFFIX) benchmark.cpp $(LIBS) $(SRC)
+
+naive: benchmark.cpp
+	$(CXX) $(CXXFLAGS) -o benchmark$(SUFFIX) benchmark.cpp $(LIBS) $(SRC)
+
 clean:
 	rm -f $(TARGET)
+	rm -f benchmark
+
 
 .PHONY: all run clean
\ No newline at end of file